<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <meta name="theme-color" content="#3367D6"/>
  <link rel="apple-touch-icon" href="/icons-192.png">
  <link rel="manifest" href="/manifest.json">
  


  <meta name="generator" content="Hexo 6.3.0">

  
    <meta name="description" content="Made of KnightofZero">
  

  

  
    <meta name="author" content="KnightofZero">
  

  

  

  <title>好玩的bilibili脚本 | Mitaka</title>

  

  
    <link rel="shortcut icon" href="/favicon.ico">
  

  

  
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/typeface-source-code-pro@1.1.3/index.min.css">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/highlightjs@9.16.2/styles/monokai.css">
  

  
<link rel="stylesheet" href="/css/style.css">

</head>
<body>
  <div class="root-container">
    
<!-- header container -->
<header class="header-container post">
  
    <div class="post-image" style="background-image: url(https://qiniu.sukoshi.xyz/src/images/68686407_p0.jpg)"></div>
  

  <!-- navbar -->
<nav class="navbar">
  <div class="navbar-content">
    <!-- logo -->
    <div class="navbar-logo">
      <a href="/">
        
          Mitaka
        
      </a>
    </div>
    <!-- link -->
    <div class="navbar-link">
      <div class="navbar-btn">
        <div></div>
        <div></div>
        <div></div>
      </div>
      <ul class="navbar-list">
        
          <li class="navbar-list-item"><a href="/">首页</a></li>
        
          <li class="navbar-list-item"><a href="/links">友链</a></li>
        
          <li class="navbar-list-item"><a href="/about">关于</a></li>
        
      </ul>
    </div>
  </div>
</nav>

  
  

  
  

  
  

  
  

  
  
    <div class="header-content">
      <div class="post-text layout-block">
        <div class="layout-margin">
          <h1 class="title-wrap">好玩的bilibili脚本</h1>
          <h2 class="title-sub-wrap">
            <strong>KnightofZero</strong>
            <span>发布于</span>
            <time  class="article-date" datetime="2023-04-06T06:41:56.000Z" itemprop="datePublished">2023-04-06</time>
          </h2>
          
            <h2 class="title-sub-wrap new-date">
              <span>最后更新于</span>
              <time  class="article-updated" datetime="2023-04-07T09:30:44.307Z" itemprop="dateUpdated">2023-04-07</time>
            </h2>
          
          
          <ul class="wrap-list dark">
  
</ul>
          <ul class="wrap-list dark">
  
</ul>
        </div>
      </div>
    </div>
  

  
  
  
</header>

    <!-- 文章 -->

<!-- 文章内容 -->
<div class="body-container">
  <article class="content-container layout-block post-container">
    <div class="article-info">
      
      
      
      
      <section class="article-entry markdown-body layout-margin content-padding--large soft-size--large soft-style--box">
        <h1 id="项目1-爬取bilibili目前的所有表情"><a href="#项目1-爬取bilibili目前的所有表情" class="headerlink" title="项目1:爬取bilibili目前的所有表情"></a>项目1:爬取bilibili目前的所有表情</h1><h2 id="准备工作"><a href="#准备工作" class="headerlink" title="准备工作"></a>准备工作</h2><ul>
<li>python3.8</li>
<li>sys包，json包</li>
</ul>
<h2 id="代码"><a href="#代码" class="headerlink" title="代码"></a>代码</h2><pre><code>import requests as r
from tqdm import tqdm
import os
import sys
import json
import logging

welcome = r&#39;&#39;&#39;-------------------------------------test--------------------------------------------------------------------&#39;&#39;&#39;
print(welcome)

def logger(log_level, log_file):
    logger = logging.getLogger()
    logger.setLevel(log_level)
    BASIC_FORMAT = &quot;%(asctime)s:%(levelname)s:%(message)s&quot;
    DATE_FORMAT = &#39;%Y-%m-%d %H:%M:%S&#39;
    formatter = logging.Formatter(BASIC_FORMAT, DATE_FORMAT)
    console = logging.StreamHandler() # 输出到控制台的handler
    console.setFormatter(formatter)
    console.setLevel(log_level)
    file = logging.FileHandler(log_file, encoding=&#39;utf-8&#39;) # 输出到文件的handler
    file.setFormatter(formatter)
    logger.addHandler(console)
    logger.addHandler(file)
    return logger

log = logger(&#39;DEBUG&#39;, &#39;log.log&#39;)

try:
    sessdata = sys.argv[1]
    print(sessdata)
    os.mkdir(&#39;Emote&#39;)
except FileExistsError:
    pass
except IndexError:
    print(sys.argv)
panel = &#39;http://api.bilibili.com/x/emote/setting/panel?business=dynamic&#39;
panelInformation = json.loads(r.get(
    panel, headers=&#123;&#39;cookie&#39;: f&#39;SESSDATA=&#123;&quot;f2ffef1d%2C1696138084%2C7a949%2A41&quot;&#125;&#39;&#125;).text)
allPackages = panelInformation[&#39;data&#39;][&#39;all_packages&#39;]
for package in allPackages:
    packageName = package[&#39;text&#39;]
    emotelist = package[&#39;emote&#39;]
    if packageName == &#39;颜文字&#39;: continue
    if not os.path.exists(f&#39;./Emote/&#123;packageName&#125;&#39;): os.mkdir(f&#39;./Emote/&#123;packageName&#125;&#39;)
    with tqdm(total=len(emotelist), desc=f&#39;Downloading &#123;packageName&#125;&#39;) as bar:
        for emote in emotelist:
            if not os.path.exists(f&#39;./Emote/&#123;packageName&#125;/&#123;emote[&quot;text&quot;]&#125;.png&#39;):
                with open(f&#39;./Emote/&#123;packageName&#125;/&#123;emote[&quot;text&quot;])&#125;.png&#39;, &#39;wb&#39;) as f:
                    f.write(r.get(emote[&#39;url&#39;]).content)
            bar.update(1)
print(&#39;Done!&#39;)
</code></pre>
<h2 id="注意事项"><a href="#注意事项" class="headerlink" title="注意事项"></a>注意事项</h2><ul>
<li>爬的内容过多，记得留足空间(700M左右)<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_emoji/bilibili_emoji_display.png" alt="bilibili_emoji_display"></li>
<li>代码不够完善，比如爬到超过显示范围的表情时候可能出现XXXX…的情况，这时候可以死马当活马医用{packageName.replace(“…”, “”}取代{packageName}来将就一下，即直接忽略…<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_emoji/bilibili_emoji_bug1.png" alt="bilibili_emoji_bug1"></li>
<li>连接失败时，关掉代理，重开即可</li>
</ul>
<h1 id="项目2-爬取bilibili视频弹幕"><a href="#项目2-爬取bilibili视频弹幕" class="headerlink" title="项目2:爬取bilibili视频弹幕"></a>项目2:爬取bilibili视频弹幕</h1><h2 id="准备工作-1"><a href="#准备工作-1" class="headerlink" title="准备工作"></a>准备工作</h2><ul>
<li>python3.8以上版本</li>
<li>cmd进入项目文件夹XXX\BilibiliDanmakuSpider-master</li>
<li>pip install -r requirements.txt</li>
</ul>
<h2 id="代码-1"><a href="#代码-1" class="headerlink" title="代码"></a>代码</h2><pre><code>    # 哔哩哔哩弹幕爬虫
    import requests
    import re
    import datetime

    # 发起请求
    cid = &#39;xxxxxxxxxxxxxxxxxxx&#39;
    url = &#39;https://api.bilibili.com/x/v1/dm/list.so?oid=&#39; + cid
    headers = &#123;
        &#39;user-agent&#39;: &#39;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 &#39;
                    &#39;Safari/537.36 Edg/111.0.1661.44 &#39;
    &#125;
    response = requests.get(url=url, headers=headers)
    response.encoding = &#39;utf-8&#39;
    &#39;&#39;&#39;
    正则捕获数据
        弹幕出现时间,模式,字体大小,颜色,发送时间戳,弹幕池,用户Hash,数据库ID,page
        &lt;d p=&quot;91.35700,1,25,16777215,1679280461,0,c61a3d4c,1276656055551609600,10&quot;&gt;愿人类荣光永存&lt;/d&gt;
    &#39;&#39;&#39;
    barrage_list = re.findall(&#39;&lt;d p=&quot;.*?&quot;&gt;(.*?)&lt;/d&gt;&#39;, response.text)
    results = re.findall(&#39;&lt;d p=&quot;(.*?),.*?,(.*?),(.*?),(.*?),.*?&quot;&gt;.*?&lt;/d&gt;&#39;, response.text)
    time_diff_list = [result[0] for result in results]
    font_size_list = [result[1] for result in results]
    color_list = [result[2] for result in results]
    timestamp_list = [result[3] for result in results]

    # 处理数据
    time_diff_res = []
    timestamp_res = []
    color_res = []

    for time_diff in time_diff_list:
        time_diff = str(datetime.timedelta(
            seconds=round(float(time_diff), 2))).strip(&quot;0:&quot;)
        time_diff_res.append(time_diff)
    for timestamp in timestamp_list:
        timestamp = str(datetime.datetime.fromtimestamp(int(timestamp)))
        timestamp_res.append(timestamp)
    for color in color_list:
        color = hex(int(color))[2:].upper()
        color_res.append(color)

    # 保存到excel
    import pandas as pd
    import openpyxl

    df = pd.DataFrame(
        &#123;&#39;弹幕内容&#39;: barrage_list, &#39;弹幕发送时间&#39;: timestamp_res, &#39;弹幕在视频中出现时间&#39;: time_diff_res, &#39;弹幕颜色&#39;: color_res,
        &#39;字体大小&#39;: font_size_list&#125;)
    df.to_excel(&#39;./target/output.xlsx&#39;, index=False)

    # 保存到json
    df.to_json(&#39;./target/output.json&#39;, force_ascii=False)
</code></pre>
<h1 id="使用方法"><a href="#使用方法" class="headerlink" title="使用方法"></a>使用方法</h1><ul>
<li>首先在项目文件夹下新建文件夹target，里面新建文件output.xlsx<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_emoji/bilibili_vedio_output.png" alt="target"></li>
<li>打开你要爬取的视频，视频网址的bilibili前加个i，跳转到API网址<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_emoji/bilibili_vedio_hettp.png" alt="http"></li>
<li>在API网站复制CID,把cid加到到main.py里的cid中<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_emoji/bilibili_vedio_cid.png" alt="cid"></li>
<li>运行main.py</li>
</ul>
<h1 id="项目3：爬评论"><a href="#项目3：爬评论" class="headerlink" title="项目3：爬评论"></a>项目3：爬评论</h1><h2 id="准备工作-2"><a href="#准备工作-2" class="headerlink" title="准备工作"></a>准备工作</h2><p>同上，无额外要求</p>
<h2 id="代码-2"><a href="#代码-2" class="headerlink" title="代码"></a>代码</h2><pre><code>import requests
url = &quot;https://api.bilibili.com/x/v2/reply/main?csrf=40a227fcf12c380d7d3c81af2cd8c5e8&amp;mode=3&amp;next=(开始页数，第一页是0，以此类推)&amp;oid=(所爬视频的OID)&amp;plat=1&amp;type=1&quot;
header = &#123;
    &quot;user-agent&quot;: &quot;(你的user-agent)&quot;,
    &quot;cookie&quot;:&quot;(你的cookie)&quot;
        &#125;
comment = []
for i in range(100):
    responses = requests.get(url=url.format(i), headers=header).json()
    for content in responses[&quot;data&quot;][&quot;replies&quot;]:
        comment.append(content[&quot;member&quot;][&quot;uname&quot;]+&quot; : &quot;+content[&quot;content&quot;][&quot;message&quot;])
    if len(comment) % 20 != 0:
        print(&quot;一共爬取到&#123;&#125;条评论&quot;.format(len(comment)))
        break
    else:
        print(&quot;搜集到%d条评论&quot; % (len(comment)))
with open(&quot;bilibili_comment.txt&quot;, &quot;w&quot;, encoding=&quot;utf-8&quot;) as fp:
    for c in comment:
        fp.write(c + &quot;\n&quot;)
</code></pre>
<h2 id="使用说明"><a href="#使用说明" class="headerlink" title="使用说明"></a>使用说明</h2><ul>
<li>首先在b站首页f12获取你的user-agent和cookie，此处略</li>
<li>进入你要爬的视频，f12，在network中找到main?csrf&#x3D;xxxx..<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_comment/bilibili_comment_f12.png" alt="f12"></li>
<li>复制OID填入代码中<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_comment/bilibili_comment_oid.png" alt="oid"></li>
</ul>
<h2 id="爬取更多"><a href="#爬取更多" class="headerlink" title="爬取更多"></a>爬取更多</h2><ul>
<li>点击旁边的response，将完整的json代码ctrl+a ctrl+c复制<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_comment/bilibili_comment_json.png" alt="json"></li>
<li>找到一个在线编辑json网页，例如<a target="_blank" rel="noopener" href="https://www.bejson.com/jsoneditoronline/index.html">网页</a>,可视化json数据<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_comment/bilibili_comment_vision.png" alt="vision"></li>
<li>找到你需要爬取的额外内容，到代码中添加即可<br><img src="https://gitee.com/y2996012639/y2996012639/raw/master/images/bilibili_comment/bilibili_comment_exert.png" alt="exert"></li>
</ul>

      </section>

      
      
        <nav class="article-nav">
          
          
            <div class="article-nav-item layout-padding">
  <article class="card-container article-nav-card content-padding--primary soft-size--large soft-style--box">
    
    <div class="card-text">
      
        <a href="/2023/04/03/%E7%99%BE%E5%BA%A6%E4%BA%91%E7%99%BD%E5%AB%96/" itemprop="url">
          <h2 class="card-text--title text-ellipsis">百度云白嫖</h2>
        </a>
      
      <div class="card-text--row">Older</div>
    </div>
  </article>
</div>
          
        </nav>
      

      <section class="page-message-container layout-padding">
        


  
  

  
  


      </section>
    </div>
    <div class="widget-info">
      <section class="widget-author widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-body">
    
      <img src="/images/mitaka2.jpg" class="soft-size--round soft-style--box" alt="KnightofZero">
    
    
      <h2>KnightofZero</h2>
    
    
      <p>现实能给理想多少时间</p>
    

    <div class="count-box">
      <div class="count-box--item">
        <svg class="icon icon-article" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M240.51564747 647.74217627h196.07203239c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806V165.10332731c0-33.18142087-30.16492806-60.32985613-60.32985612-60.32985611H245.04038668C225.43318342 104.7734712 210.35071939 119.85593522 210.35071939 139.46313845V617.57724821c0 16.59071043 13.57421762 30.16492806 30.16492808 30.16492806z m663.62841731-452.47392089v482.63884894c0 33.18142087-27.14843525 60.32985613-60.32985612 60.32985613H180.18579134c-33.18142087 0-60.32985613-27.14843525-60.32985612-60.32985613V195.26825538c-49.77213131 0-90.49478418 40.72265287-90.49478417 90.49478417v452.4739209c0 49.77213131 40.72265287 90.49478418 90.49478417 90.49478417h286.56681657c16.59071043 0 30.16492806 13.57421762 30.16492807 30.16492807s13.57421762 30.16492806 30.16492805 30.16492806h90.49478418c16.59071043 0 30.16492806-13.57421762 30.16492805-30.16492806s13.57421762-30.16492806 30.16492807-30.16492807h286.56681657c49.77213131 0 90.49478418-40.72265287 90.49478417-90.49478417V285.76303955c0-49.77213131-40.72265287-90.49478418-90.49478417-90.49478417zM587.41232014 647.74217627h191.54729318c19.60720323 0 34.68966726-15.08246403 34.68966729-34.68966727V134.93839925c0-16.59071043-13.57421762-30.16492806-30.16492808-30.16492805H617.57724821c-30.16492806 0-60.32985613 27.14843525-60.32985612 60.32985611v452.4739209c0 16.59071043 13.57421762 30.16492806 30.16492805 30.16492806z" fill="currentColor"></path>
</svg>
        <span>9</span>
      </div>
      <div class="count-box--item">
        <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
        0
      </div>
      <div class="count-box--item">
        <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
        0
      </div>
    </div>
  </div>
</section>

      

      
<section class="widet-notice widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-notice" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M512 945.02305225v28.15620663a24.27259221 24.27259221 0 0 1-24.27259221 24.27259335H394.0352a48.54518557 48.54518557 0 0 1-41.74885888-23.78714112l-110.68302222-184.47170332a132.04290333 132.04290333 0 0 1-17.47626667-48.54518557h118.4502511a200.97706667 200.97706667 0 0 1 76.21594113 14.56355556l20.38897777 133.49925888a48.54518557 48.54518557 0 0 0 36.40888888 27.67075555l16.01991111 2.91271112a24.27259221 24.27259221 0 0 1 20.38897778 25.72894889zM997.45185223 463.45481443a194.18074112 194.18074112 0 0 1-38.8361489 116.50844445 24.75804445 24.75804445 0 0 1-36.4088889 0l-34.95253333-34.95253333a24.27259221 24.27259221 0 0 1-2.91271111-30.58346667 97.09036999 97.09036999 0 0 0 0-106.79940665 24.27259221 24.27259221 0 0 1 2.91271111-30.58346666l34.95253333-34.95253334a24.75804445 24.75804445 0 0 1 18.93262223-7.28177777 26.2144 26.2144 0 0 1 17.47626667 9.70903665A194.18074112 194.18074112 0 0 1 997.45185223 463.45481443z m-194.18074112-388.36148111v776.72296335a48.54518557 48.54518557 0 0 1-48.54518556 48.54518443h-28.64165888a48.54518557 48.54518557 0 0 1-33.98163001-14.07810332l-145.63555556-143.20829668A291.27111111 291.27111111 0 0 0 342.57730333 657.63555556H172.18370333a145.63555556 145.63555556 0 0 1-145.63555556-145.63555556v-97.09036999a145.63555556 145.63555556 0 0 1 145.63555556-145.63555556h170.3936a291.27111111 291.27111111 0 0 0 206.31703779-85.43952668l145.63555555-143.20829554a48.54518557 48.54518557 0 0 1 33.98162888-14.07810446H754.72592555a48.54518557 48.54518557 0 0 1 48.54518556 48.54518555z" fill="currentColor"></path>
</svg>
    <span>NOTICE</span>
  </div>
  <div class="widget-body">
    <p>我自己练习搭建的小网页~</p>
  </div>
</section>


      <section class="widget-categorys widget-item layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-categories" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M900.3614811 257.09082106h-339.81629553l-67.96326003-101.9448889c-19.41807444-29.12711113-48.54518557-43.69066667-82.52681443-43.69066667H123.6385189c-53.39970333 0-97.09036999 43.69066667-97.09037113 97.09036999v582.54222222c0 53.39970333 43.69066667 97.09036999 97.09037113 97.09037002h776.7229622c53.39970333 0 97.09036999-43.69066667 97.09037113-97.09037002V354.18119104c0-53.39970333-43.69066667-97.09036999-97.09037113-97.09036998z m-97.09036999 242.72592554H220.72888889c-24.27259221 0-48.54518557-24.27259221-48.54518556-48.54518556s24.27259221-48.54518557 48.54518556-48.54518444h582.54222222c24.27259221 0 48.54518557 24.27259221 48.54518556 48.54518444s-24.27259221 48.54518557-48.54518556 48.54518556z" fill="currentColor"></path>
</svg>
    <span>CATEGORYS</span>
  </div>
  <div class="widget-body">
    <ul class="categorys-list">
      
    </ul>
  </div>
</section>

      <section class="widget-tags widget-item  layout-margin content-padding--primary soft-size--large soft-style--box">
  <div class="widget-title">
    <svg class="icon icon-tags" viewBox="0 0 1098 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M283.42180005 272q0-28.38857157-20.09142843-48.48000001t-48.47999998-20.09142842-48.48000002 20.09142842-20.09142846 48.48000001 20.09142846 48.48 48.48000002 20.09142843 48.47999998-20.09142843 20.09142843-48.48zM855.0332285 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.03999997 263.58857157q-20.9142853 19.81714313-48.75428534 19.81714312-28.38857157 0-48.20571468-19.81714312l-383.04-383.58857157q-20.36571468-19.81714313-34.55999999-54.10285688t-14.19428534-62.6742853l0-222.85714313q0-27.84000002 20.36571469-48.20571469t48.2057147-20.36571466l222.85714313 0q28.38857157 0 62.6742853 14.19428529t54.65142842 34.55999999l383.04000001 382.49142843q19.81714313 20.9142853 19.81714314 48.75428532zM1060.74751475 580.57142843q0 28.38857157-19.81714313 48.2057147l-263.04 263.58857157q-20.9142853 19.81714313-48.75428531 19.81714312-19.26857155 0-31.61142843-7.47428531t-28.38857159-24.13714314l251.79428534-251.7942853q19.81714313-19.81714313 19.81714308-48.20571469 0-27.84000002-19.81714308-48.75428531l-383.04000001-382.49142845q-20.36571468-20.36571468-54.65142842-34.55999999t-62.67428532-14.19428534l120 0q28.38857157 0 62.67428532 14.19428534t54.65142842 34.55999999l383.03999998 382.49142845q19.81714313 20.9142853 19.81714314 48.75428531z" fill="currentColor"></path>
</svg>
    <span>TAGS</span>
  </div>
  <div class="widget-body">
    <div class="tags-cloud">
      
    </div>
  </div>
</section>
    </div>
  </article>
</div>

    <!-- footer container -->
<footer id="footer" class="footer">
  <div class="footer-container">
    
    <div class="social-icons">
      
        
      
        
      
        
      
        
          <a href="https://github.com/knightpzz/" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-github" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M64.6 512c0 195.6 125.4 361.9 300.1 422.9 23.5 5.9 19.9-10.8 19.9-22.2v-77.6c-135.8 15.9-141.3-74-150.5-89-18.5-31.5-61.9-39.5-49-54.5 31-15.9 62.5 4 98.9 58 26.4 39.1 77.9 32.5 104.1 26 5.7-23.5 17.9-44.5 34.7-60.9-140.7-25.2-199.4-111.1-199.4-213.3 0-49.5 16.4-95.1 48.4-131.8-20.4-60.6 1.9-112.4 4.9-120.1 58.2-5.2 118.5 41.6 123.3 45.3 33.1-8.9 70.8-13.7 112.9-13.7 42.4 0 80.3 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.4-43.9 2.9 7.7 24.7 58.3 5.5 118.1 32.5 36.8 49 82.8 49 132.4 0 102.3-59 188.3-200.2 213.2 23.5 23.3 38.1 55.5 38.1 91.1v112.7c0.8 9 0 17.9 15.1 17.9C832.7 877 960.4 709.4 960.4 512.1c0-247.5-200.6-447.9-447.9-447.9C265 64.1 64.6 264.5 64.6 512z"></path>
</svg>
          </a>
        
      
        
          <a href="https://twitter.com/guanquanhong" class="soft-size--primary soft-style--box" target="_blank" rel="noopener noreferrer">
            <svg class="icon icon-twitter" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
  <path d="M962.285714 233.142857q-38.285714 56-92.571429 95.428571 0.571429 8 0.571429 24 0 74.285714-21.714286 148.285714t-66 142-105.428571 120.285714-147.428571 83.428571-184.571429 31.142857q-154.857143 0-283.428571-82.857143 20 2.285714 44.571429 2.285714 128.571429 0 229.142857-78.857143-60-1.142857-107.428571-36.857143t-65.142857-91.142857q18.857143 2.857143 34.857143 2.857143 24.571429 0 48.571429-6.285714-64-13.142857-106-63.714286t-42-117.428571l0-2.285714q38.857143 21.714286 83.428571 23.428571-37.714286-25.142857-60-65.714286t-22.285714-88q0-50.285714 25.142857-93.142857 69.142857 85.142857 168.285714 136.285714t212.285714 56.857143q-4.571429-21.714286-4.571429-42.285714 0-76.571429 54-130.571429t130.571429-54q80 0 134.857143 58.285714 62.285714-12 117.142857-44.571429-21.142857 65.714286-81.142857 101.714286 53.142857-5.714286 106.285714-28.571429z"></path>
</svg>
          </a>
        
      
    </div>
     
    <p>&copy; 2023 <a href="/" target="_blank">KnightofZero</a></p>

    

    <p>Powered by <a href="https://hexo.io" target="_blank" rel="noopener noreferrer">Hexo</a> Theme - <a href="https://github.com/miiiku/flex-block" target="_blank" rel="noopener noreferrer author">flex-block</a></p>

    <p>
      <a href="javascript:;" id="theme-light">🌞 浅色</a>
      <a href="javascript:;" id="theme-dark">🌛 深色</a>
      <a href="javascript:;" id="theme-auto">🤖️ 自动</a>
    </p>
  </div>
</footer>
  </div>

  <div class="back-to-top-fixed soft-size--round soft-style--box">
    <svg class="icon icon-back-to-top" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">
      <path d="M725.333333 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8l-213.333333-213.333333c-17.066667-17.066667-17.066667-42.666667 0-59.733333s42.666667-17.066667 59.733333 0l213.333333 213.333333c17.066667 17.066667 17.066667 42.666667 0 59.733333C746.666667 422.4 738.133333 426.666667 725.333333 426.666667z"></path>
      <path d="M298.666667 426.666667c-12.8 0-21.333333-4.266667-29.866667-12.8-17.066667-17.066667-17.066667-42.666667 0-59.733333l213.333333-213.333333c17.066667-17.066667 42.666667-17.066667 59.733333 0s17.066667 42.666667 0 59.733333l-213.333333 213.333333C320 422.4 311.466667 426.666667 298.666667 426.666667z"></path>
      <path d="M512 896c-25.6 0-42.666667-17.066667-42.666667-42.666667L469.333333 170.666667c0-25.6 17.066667-42.666667 42.666667-42.666667s42.666667 17.066667 42.666667 42.666667l0 682.666667C554.666667 878.933333 537.6 896 512 896z"></path>
    </svg>
  </div>

  
  <!-- aplayer -->


<!-- dplayer -->




  


  


  




<script src="/js/script.js"></script>


  
  <!-- 尾部用户自定义相关内容 -->
</body>
</html>
